Skip to content

fix: Preserve nested XML blocks when adding Markdown separators - #11175

Merged
vicancy merged 1 commit into
mainfrom
codex/fix-11173-xml-block-indent
Sep 24, 2026
Merged

vicancy merged 1 commit into
mainfrom
codex/fix-11173-xml-block-indent

Conversation

@vicancy

@vicancy vicancy commented Sep 23, 2026

Copy link
Copy Markdown
Contributor

Fixes #11173.

Adding a Markdown separator before an indented XML block inside a container can turn the generated HTML into an indented code block. Align the nested block's opening tag with its container when inserting that separator after text. Preserve surrounding text and code indentation, existing blank lines, and top-level Markdown behavior.

Add regression coverage for both examples in the issue, bullet/number/table lists, nested lists with <see> references, different containers and indentation levels, and Markdown/XML code preservation. Existing test expectations are unchanged.

Validation:

  • dotnet test test/Docfx.Dotnet.Tests/Docfx.Dotnet.Tests.csproj -f net10.0 --no-restore: 213 passed, using Markdig 1.4.0.
  • With the original production code, five of the six focused regression cases fail; the non-indented control passes. All six pass with the fix.
  • dotnet format --verify-no-changes for the changed files and git diff --check passed.

@vicancy
vicancy merged commit 067de51 into main Sep 24, 2026
10 checks passed
@vicancy
vicancy deleted the codex/fix-11173-xml-block-indent branch September 24, 2026 08:32
This was referenced Sep 25, 2026
Ank-KhoaHo pushed a commit to Ank-KhoaHo/DocToolkit that referenced this pull request Oct 3, 2026
Updated [docfx](https://github.com/dotnet/docfx) from 2.78.5 to 2.81.0.

<details>
<summary>Release notes</summary>

_Sourced from [docfx's
releases](https://github.com/dotnet/docfx/releases)._

## 2.81.0

## What's Changed

### ✨ Features & Platform Support

* Allow custom templates to override `search.min.js` in the modern
template by @​filzrev in
[#​10055](dotnet/docfx#10055).
* Add `metadata.sourceLinkExclude` to exclude selected source paths from
**View Source** links without removing API documentation by @​vicancy in
[#​11141](dotnet/docfx#11141).
* Record the DocFX build version in the `docfx_version` field of
`manifest.json` by @​vicancy in
[#​11162](dotnet/docfx#11162).
* Add a .NET 11 RC target, including support for the .NET 11 Razor
source generator, while retaining .NET 8, 9, and 10 targets by @​vicancy
and @​filzrev in [#​11176](dotnet/docfx#11176)
and [#​11182](dotnet/docfx#11182).

### ⚡ Performance & Reliability

* Reduce JavaScript template processing overhead and memory allocations
by reusing parsed scripts and improving model conversion. Add execution
limits to prevent runaway scripts from hanging builds by @​lahma in
[#​11084](dotnet/docfx#11084).
* Avoid unnecessary exceptions and repeated file reads when loading
`toc.yml` by @​filzrev in
[#​9974](dotnet/docfx#9974).

### 🐛 Bug Fixes

* Restore source links for partial types extended by source generators
by @​vicancy in [#​11141](dotnet/docfx#11141).
* Fix local namespace links in managed reference documentation by
resolving them through xrefs during site generation by @​vicancy in
[#​11163](dotnet/docfx#11163).
* Preserve nested XML blocks when inserting Markdown separators,
preventing content from incorrectly rendering as code blocks by
@​vicancy in [#​11175](dotnet/docfx#11175).
* Preserve explicit `false` and `0` values when overwriting nullable
properties by @​vicancy in
[#​11181](dotnet/docfx#11181).

### 📦 Dependency Updates

* Update Jint to **4.16.3** in
[#​11157](dotnet/docfx#11157).
* Update Markdig to **1.4.0** in
[#​11158](dotnet/docfx#11158) and
[#​11160](dotnet/docfx#11160).
* Update YamlDotNet to **18.1.0** in
[#​11167](dotnet/docfx#11167).
* Update PdfPig to **0.1.16** in
[#​11168](dotnet/docfx#11168).
* Update ICSharpCode.Decompiler to **11.1.0.9782** in
[#​11184](dotnet/docfx#11184).
* Update System.Composition to **10.0.12** in
[#​11165](dotnet/docfx#11165).

### Upgrade Notes

Custom JavaScript template preprocessors now enforce a **30-second
timeout** and a **50-million-statement limit** for each `getOptions` or
`transform` invocation. Long-running custom scripts may need adjustment.

**Full Changelog**:
dotnet/docfx@v2.80.1...v2.81.0

## 2.80.1

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### 💪 Other Changes
* fix: preserve thematic breaks in overwrite Markdown by @​vicancy in
dotnet/docfx#11142
* fix: XML comment parse logics for block element that is adjacent to
markdown content by @​filzrev in
dotnet/docfx#10966
* chore: Update Roslyn and Microsoft.Build package dependencies by
@​filzrev in dotnet/docfx#11124
* fix: preserve indentation around XML comment code blocks by @​vicancy
in dotnet/docfx#11143
* fix: stop metadata generation when restore fails by @​vicancy in
dotnet/docfx#11146
* fix: clarify empty .NET API diagnostics by @​vicancy in
dotnet/docfx#11145
* fix: share tool templates across target frameworks by @​vicancy in
dotnet/docfx#11144
* fix: honor TOC metadata while preserving file metadata overrides by
@​vicancy in dotnet/docfx#11140
* fix(deps): update esbuild to 0.28.1 and tsx to 4.22.4 by
@​dependabot[bot] in dotnet/docfx#11077
* feat(pdf): allow footer and header on cover and toc by @​sergimos in
dotnet/docfx#10958
* chore(deps): bump actions/setup-dotnet from 5 to 6 by
@​dependabot[bot] in dotnet/docfx#11116
* chore(deps): bump actions/checkout from 6 to 7 by @​dependabot[bot] in
dotnet/docfx#11115
* Bump Markdig from 1.1.0 to 1.1.1 by @​dependabot[bot] in
dotnet/docfx#11024
* deps: Update JsonSchema.Net dependency to 8.0.5 by @​filzrev in
dotnet/docfx#10964

## New Contributors
* @​sergimos made their first contribution in
dotnet/docfx#10958

**Full Changelog**:
dotnet/docfx@v2.78.6...v2.80.1

## 2.78.6

<!-- Release notes generated using configuration in .github/release.yml
at main -->

## What's Changed
### 💪 Other Changes
* chore(deps): bump dependabot/fetch-metadata from 2.3.0 to 2.5.0 by
@​dependabot[bot] in dotnet/docfx#10956
* chore(deps): bump paulhatch/semantic-version from 5.4.0 to 6.0.1 by
@​dependabot[bot] in dotnet/docfx#10978
* chore(deps-dev): bump minimatch from 3.1.2 to 3.1.5 in /templates by
@​dependabot[bot] in dotnet/docfx#11016
* Bump Jint from 4.6.0 to 4.6.1 by @​dependabot[bot] in
dotnet/docfx#11018
* chore(deps): bump actions/upload-artifact from 6 to 7 by
@​dependabot[bot] in dotnet/docfx#11015
* chore(deps): bump actions/download-artifact from 7 to 8 by
@​dependabot[bot] in dotnet/docfx#11014
* Bump Markdig from 1.0.0 to 1.1.0 by @​dependabot[bot] in
dotnet/docfx#11019
* chore: remove unnecessary using to fix the Lint check by @​lahma in
dotnet/docfx#11085
* Make xref archive download test hermetic by @​vicancy in
dotnet/docfx#11092
* fix: treat different ports as external links by @​vicancy in
dotnet/docfx#11091
* chore: cleanup YamlSerializationTest.cs by @​filzrev in
dotnet/docfx#10974
* chore(deps-dev): bump follow-redirects from 1.15.11 to 1.16.0 in
/templates by @​dependabot[bot] in
dotnet/docfx#11062
* chore(deps): bump postcss from 8.5.6 to 8.5.14 in /templates by
@​dependabot[bot] in dotnet/docfx#11070
* chore(deps): bump uuid and mermaid in /templates by @​dependabot[bot]
in dotnet/docfx#11073
* chore(deps-dev): bump lodash from 4.17.23 to 4.18.1 in /templates by
@​dependabot[bot] in dotnet/docfx#11061
* chore(deps): bump fast-uri from 3.1.0 to 3.1.2 in /templates by
@​dependabot[bot] in dotnet/docfx#11071
* chore(deps): bump mermaid from 11.15.0 to 11.16.1 in /templates by
@​dependabot[bot] in dotnet/docfx#11093
* chore(deps): bump dompurify from 3.3.1 to 3.4.13 in /templates by
@​dependabot[bot] in dotnet/docfx#11096
* chore(deps-dev): bump js-yaml from 4.1.1 to 4.3.1 in /templates by
@​dependabot[bot] in dotnet/docfx#11095
* chore(deps): bump postcss from 8.5.14 to 8.5.26 in /templates by
@​dependabot[bot] in dotnet/docfx#11094
* chore(deps): bump fast-uri from 3.1.2 to 3.1.5 in /templates by
@​dependabot[bot] in dotnet/docfx#11097
* chore(deps-dev): bump socket.io-parser from 4.2.5 to 4.2.7 in
/templates by @​dependabot[bot] in
dotnet/docfx#11098
* chore(deps): bump ws, engine.io-client, engine.io and
socket.io-adapter in /templates by @​dependabot[bot] in
dotnet/docfx#11101
* chore(deps-dev): bump brace-expansion from 1.1.12 to 1.1.18 in
/templates by @​dependabot[bot] in
dotnet/docfx#11099
* deps: Update playwright version to 1.60.0 by @​filzrev in
dotnet/docfx#11074
* deps: Update roslyn package versions to 5.6.0 by @​filzrev in
dotnet/docfx#11047
* fix(deps): apply compatible npm security updates by @​vicancy in
dotnet/docfx#11105
* Bump the spectre group with 2 updates by @​dependabot[bot] in
dotnet/docfx#11102
* Bump the xunit group with 1 update by @​dependabot[bot] in
dotnet/docfx#11107
* Fix typo in Schema Document Processor overview by @​smartcaveman in
dotnet/docfx#11005
* Bump coverlet.collector from 8.0.0 to 8.0.1 by @​dependabot[bot] in
dotnet/docfx#11045
* chore(deps): bump paulhatch/semantic-version from 6.0.1 to 6.0.2 by
@​dependabot[bot] in dotnet/docfx#11036
* chore(deps): bump dependabot/fetch-metadata from 2.5.0 to 3.0.0 by
@​dependabot[bot] in dotnet/docfx#11051
* chore(deps): bump actions/deploy-pages from 4 to 5 by
@​dependabot[bot] in dotnet/docfx#11049
* chore(deps): bump azure/login from 2 to 3 by @​dependabot[bot] in
dotnet/docfx#11035
* Bump Jint from 4.6.1 to 4.6.3 by @​dependabot[bot] in
dotnet/docfx#11032
* chore(deps): bump dorny/test-reporter from 2.5.0 to 3.0.0 by
@​dependabot[bot] in dotnet/docfx#11043
* Bump AwesomeAssertions from 9.4.0 to 9.5.0 by @​dependabot[bot] in
dotnet/docfx#11114
* chore(deps): bump dependabot/fetch-metadata from 3.0.0 to 3.1.0 by
@​dependabot[bot] in dotnet/docfx#11110
* chore(deps): bump paulhatch/semantic-version from 6.0.2 to 6.0.3 by
@​dependabot[bot] in dotnet/docfx#11112
* chore(deps): bump actions/upload-pages-artifact from 4 to 5 by
@​dependabot[bot] in dotnet/docfx#11109
* chore(deps): bump codecov/codecov-action from 5 to 7 by
@​dependabot[bot] in dotnet/docfx#11113
* chore(deps): bump actions/github-script from 8 to 9 by
@​dependabot[bot] in dotnet/docfx#11111
* Bump the xunit group with 1 update by @​dependabot[bot] in
dotnet/docfx#11117
* Bump coverlet.collector from 8.0.1 to 10.0.1 by @​dependabot[bot] in
dotnet/docfx#11119
* Bump Microsoft.NET.Test.Sdk from 18.0.1 to 18.9.0 by @​dependabot[bot]
in dotnet/docfx#11122
 ... (truncated)

Commits viewable in [compare
view](dotnet/docfx@v2.78.5...v2.81.0).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docfx&package-manager=nuget&previous-version=2.78.5&new-version=2.81.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This was referenced Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] XMLDoc content gets rendered inside of Markdown code block

1 participant